package cn.bugstack.springframework.aop;

/**
 * Pointcut 类用于定义切点，即确定在何处应用通知，即确定在哪些连接点上应用通知。
 * 特点：
 *      精确定位连接点：Pointcut 对象可以通过匹配类、方法、方法参数、注解等多种条件来精确定位连接点。
 *      多样化的匹配规则：Spring 提供了多种内置的 Pointcut 实现，例如 AspectJExpressionPointcut、NameMatchMethodPointcut 等，以满足不同场景下的匹配需求。
 *      与通知结合使用：Pointcut 主要用于确定在何处应用通知，通常与通知（Advice）结合使用，形成切面（Aspect），实现横切关注点的功能。
 */
public interface Pointcut {

    /**
     * 返回此切点的类过滤器。
     * @return 类过滤器（永远不为<code>null</code>）
     */
    ClassFilter getClassFilter();

    /**
     * 返回此切点的方法匹配器。
     * @return 方法匹配器（永远不为<code>null</code>）
     */
    MethodMatcher getMethodMatcher();

}

